package com.gadgets.framework.common.util;

import com.gadgets.framework.common.dto.Pagination;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;

import java.util.List;

/**
 * @author UncleXiu
 * @version v1.0.0
 * @data 2020-09-17
 * 
 */
public class PaginationUtil {

    /**
     * 构建分页关键信息
     * @param pagination    分页信息
     */
    public static void bulidPaginationInfo(Pagination pagination){
        if(null!=pagination) {
            if(pagination.getCurrentPage()==0){
                return;
            }
            PageHelper.startPage(pagination.getCurrentPage(), pagination.getPageSize());
        }
    }

    /**
     * 构建分页返回信息
     * @param pageInfo      查询结果信息
     * @param pagination    分页结果信息
     * @param <T>           查询对象类型
     */
    public static <T> void getPaginationResultInfo(List<T> pageInfo, Pagination pagination){
        if(null!=pagination){
            if(pageInfo instanceof Page){
                pagination.setTotalPage(((Page<T>) pageInfo).getPages());
                pagination.setTotalRecord((int)((Page<T>) pageInfo).getTotal());
            }else {
                pagination.setTotalPage(1);
                pagination.setTotalRecord(pageInfo.size());
            }
        }
    }

    /**
     * 获取页面结束的记录行数
     * @param totalNum      总记录数
     * @param currentPage   当前页数
     * @param pageSize      每页大小
     * @return              结束的记录行数
     */
    public static int getPageEndNum(int totalNum, int currentPage, int pageSize){
        return Math.min(totalNum,currentPage*pageSize);
    }

}
